#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>

#include "oled.h"
#include "font.h"
//包含头文件
#include "myoled.h"

//定义OLED显示屏使用的I2C设备文件路径
#define FILENAME "/dev/i2c-3"

//声明全局显示信息结构体实例
static struct display_info disp;

//在OLED屏幕上显示信息
int oled_show(void *arg)
{
    //将传入参数转换为unsigned char指针
    unsigned char *buffer = (unsigned char *)arg;

    //检查buffer是否有效
    if(NULL != buffer)
    {
        //在屏幕指定位置（0，10）显示传入的文本内容
        oled_putstrto(&disp, 0, 9+1, buffer);
    }
    
    #if 0
    //在显示新内容前清屏
    oled_clear(&disp);//

    oled_putstrto(&disp, 0, 9+1, "This garbage is:");
    disp.font = font2;
    switch(buffer[2])
    {
    case 0x41:
        oled_putstrto(&disp, 0, 20, "dry waste");
        break;
    case 0x42:
        oled_putstrto(&disp, 0, 20, "wet waste");
        break;
    case 0x43:
        oled_putstrto(&disp, 0, 20, "recyclable waste");
        break;
    case 0x44:
        oled_putstrto(&disp, 0, 20, "hazardous waste");
        break;
    case 0x45:
        oled_putstrto(&disp, 0, 20, "recognition failed");
        break;
    } 
#endif

    disp.font = font2;//设置字体为font2

    oled_send_buffer(&disp);//将显示屏缓冲区发送到oled屏幕进行实际显示

    return 0;//返回0表示函数执行成功
}

//初始化OLED显示屏
int myoled_init(void)
{
    int e;//用于存储函数返回值
    disp.address = OLED_I2C_ADDR;//设置OLED显示屏的I2C地址（从oled.h获取）
    disp.font = font2;//设置默认字体font2

    //打开OLED设备文件，建立与硬件的连接
    e = oled_open(&disp, FILENAME);
    e = oled_init(&disp);//初始化OLED控制器，设置显示 参数

    //添加清屏操作，在初始化完成后清楚屏幕内容
    oled_clear(&disp);  //建议在这里添加清屏

    return e; //返回初始化结果
}
